[WWDC18] Safari Extensionsのdeprecatedについて #WWDC18
本記事は Apple からベータ版として公開されているドキュメントを情報源としています。 そのため、正式版と異なる情報になる可能性があります。ご留意の上、お読みください。
なぜかdeprecatedものばかり書いていますが気になったトピックですので気にせず書いていきます。
今回は What’s New in Safari and WebKit - WWDC 2018 - Videos - Apple Developer で語られていたSafari Extensionsがdeprecatedになる件について整理したいと思います。
Safariの機能を拡張する歴史
Safariの機能を拡張することについてはいくつかの変遷がありました。
- 2010: Safari Extensions
- Safari Extensionsが導入されました
- Google Chromeも同年にChrome Extensionsをリリースしていますね(ブラウザ拡張機能 - Wikipedia)
- 2014: macOSと iOSに App Extensionが登場
- App Extensionプログラミングガイドで示されるApp Extensionが導入されました。
- 2015: macOSと iOSに コンテンツブロッカーが登場
- コンテンツブロッカーは1つのジャンルとなり多くのプロダクトを生み出したのではないでしょうか
- 2016: macOSに Safari App Extensionが登場
- Safari Extensionsとの2本柱になりました
- 2018: Safari 12のリリースに合わせて Safari Extensionsがdeprecatedに
Safari Extensionsのこれから
- Safari 12 はSafari Extensions Galleryに属さない
.safariextz
拡張をブロックします- Safari 12 はmacOS 10.14 Mojave と iOS 12 に搭載予定です
- Safari Extensions Galleryに提出できるのは 2018年末までになります
- 現状でもSafari Extensions Galleryのトップページは Mac AppStoreのSafari Extensionsセクションに誘導するようになっています
- Safari App ExtensionまたはContent Blockerへ移行が推奨されています
となっています。
いわゆる野良Safari Extensionsでも良作のものがあると思うのですが徐々に使用しづらくなるのでしょう。
Safari App Extensionとは
Safari App ExtensionとはSafari App Extensions | Apple Developer Documentationで述べられているように、ネイティブアプリに同梱される拡張になります。 その構成が示す通り、Safari上のWebコンテンツとネイティブアプリのやりとりをすることが主目的となります。 この拡張は JavaScript, CSS および Objective-Cまたは Swiftで実装可能で、従来同様のInjection Scriptがネイティブコード側のExtensionとメッセージパッシングでやりとりすることで機能拡張を実現することになります。
最後に
推奨されているSafari App ExtensionやContent Blockerですが、(最新の) Xcode 9には(残念ながら)プロジェクトテンプレートが用意されていません。 以前はあったのですが、無くなったところをみると Safariの機能を拡張する事に対する Appleのプライオリティが低くなったと感じます。 今後はWPAなど別の方向性に注力するのかもしれません。